package com.lin.customNamespace.config.parser;

import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.beans.factory.xml.BeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;


public class linBeanDefinitionParser implements BeanDefinitionParser {
    /**
     * 解析自定义标签并注册BeanPostProcessor
     *
     * @param element XML配置文件中的元素节点
     * @param parserContext 解析上下文，用于注册新的BeanDefinition
     * @return 解析完成后的BeanDefinition，此处返回null表示不返回额外的BeanDefinition
     */
    @Override
    public BeanDefinition parse(Element element, ParserContext parserContext) {
        // 创建一个新的BeanDefinition实例, 用于定义Bean的属性
        BeanDefinition beanDefinition = new RootBeanDefinition();

        // 设置Bean的类名, 此处的Bean是TimeLogBeanPostProcessor, 用于记录方法执行时间
        beanDefinition.setBeanClassName(
                "com.lin.customNamespace.config.beanPostProcessor.TimeLogBeanPostProcessor");

        // 使用解析上下文注册BeanDefinition, 使得TimeLogBeanPostProcessor可以应用到Spring容器中
        parserContext.getRegistry().registerBeanDefinition(
                "timeLogBeanPostProcessor", beanDefinition);
        return beanDefinition;
    }
}
